23

» WarCraft 3 / ИИ не прокачивает способности героям

Похожие вопросы:

ответ
Прятать юнита, создавать дамми с нужными способностями. Если никто не сделает, возможно вечером попытаюсь (сейчас у меня утро) сделать.
ответ
]]Chupakabra[[, я понял. Крч на костылях придется лепить. Попробуй при выборе героя добавлять геройские абилки, а потом блочить или удалять их. Думаю, так можно добавить до 7 штук. Через ро не получается больше 5.
Если не получится - пробуй делать полностью триггерно с помощью спеллбука.
ответ
8gabriel8, влзможно ты равкод оставлял у способности разный на разных уровнях.
ответ
Арена, выживание.

23

» WarCraft 3 / Удаление эффекта

Похожие вопросы:

ответ
call DestroyEffect(AddSpecialEffect(e, x, y))
ответ
null - это нулевая строка, это не твой бро
"" - четкая строка без единого символа, это твой бро
да, игре похер, какой путь до модели, объект создается всегда
ответ
время смерти эффектов - игровая константа, по дефолту 5с, в константах ищи
ответ
>>В не правильно условий удаления?
Возможно идёт перезапись переменных, из-за чего не всё удаляется.
Актуально с глобалками
Смотрите в сторону мультиплеерности.
Если в ваших тестах с одним героем всё хорошо, то не факт что всё будет хорошо, если одновременно кастанутся 2 одинаковых спелла, которые построены на одних и тех же переменных.
ответ
После создания эффекта, следующей строчкой делаешь удаление.
Если он он создается на время, то заноси в переменную и когда надо удаляй.

23

» WarCraft 3 / Да что же это такое?!

Похожие вопросы:

ответ
Да у тебя куча дыр, во-первых ты не запустил триггер 115 области lumber direction, и оно соответственно не реагирует на событие. Во-вторых перепроверь gold проверку условия на да или нет в той карте которую ты отправил стоит нет
А золото не движется потому что ты ожидание 0,5 сек поставил а область в милисекунде от изначальной то есть триггер не успевает запуститься
ответ
Правильный ответ ДА и он здесь xgm.guru/p/renderedge/memoryhack?postid=408475#comment190
ответ
Прошлое имеет смысл оставаться в прошлом. Актуальные версии игры вроде бы скрытых вирусов не имеют, а за ремастер уже не так жалко отдать лишнюю тысячу рублей, как за оригинальную игру 2002-го. Правда отдавал эти деньги всё равно чрезмерно щедрый я... За Сашку, Илюшку.. ну а себе Deluxe.
ответ
Да ну нафиг,или я не правилно говорю или меня не правильно понимают
Думаю, два в одном.

23

» WarCraft 3 / Действие - ничего не делать

Похожие вопросы:

ответ
p >= 0 and p >= 3
ну это вообще пушка
и это p >= 4 and p >= 7
ответ
Всё, сорь за бред. Я "логические" ещё не сильно запомнил.
ответ
скачай этот файл и закинь его в папку AdicHelper\lib\ в папке с jngp
после в шапке карты напиши include "ifdebug.j"
и создай триггер с событием
игрок написал в чат ifdebug как точное совпадение
действие
кастом скрипт log()
после чего запусти карту и напиши в чат ifdebug
он выведет на экран все if/else/elseif через которые он прошёл (true в скобках в конце строки означает что значение в ифе истина)
ответ
Разрешённые цели - добавляешь "Здания"
Эффект на них работает, но без иконки снизу.
Только что потестил на "Доспехах веры"

23

» WarCraft 3 / Помогите с созданием способности!

Похожие вопросы:

ответ
Есть специальный ресурс , в котором ты можешь заказать способность , которую не можешь сделать сам.
ответ
должен сразу предупредить что делать за тебя никто не будет
теперь по твоим вопросам
  1. чтобы нельзя было кликать скрываешь, даёшь москиты, делаешь видимым
  2. действие проиграть звук и указываешь твою фразу
  3. выбираем всех подходящих(враги,живые) юнитов в радиусе от точки каста и создаём по дамми юниту(юнит без модели, без атаки, с москитами, с нужной способность, время жизни юнита 1 сек) для каждого подходящего юнита приказывая дамми юниту применить нужную способность в подходящего юнита
таким образом каждый дамми юнит применит нужную способность (в твоём случае корни) в 1 подходящего юнита для которого он и был создан а потом исчезнет
  1. система отлова урона
  2. морф юнита либо орбы
всё что я не описал есть в статьях
тебе нужны первые 2 раздела ("Основы" и "Триггеры и объекты")
ответ
Найти эту способность в РО, скопировать и затем вставить через РО в свою карту. Если способность триггерная также скопировать код через редактор триггеров. (До копирования в параметрах редактора поставить галочку - Автоматически создавать новые переменные)
PS - Герою добавить ее также через РО
ответ
FabulousTiger, большенству людей сложно влиться в чужой проект если тот абсолютно не отвечает некоторым критериям либо человеку может просто не нравится задумка. И это далеко не та ситуация когда нужно проглотить свое негодование, уровень роботы такого человека будет напрямую зависеть от того насколько ему нравится проект.
KaneThaumaturge, твоя скорость изучения JASS будет напрямую зависеть от того насколько ты в это захочешь втянуться. Правда должен предупредить что есть люди которые просто не приспособлены к тому что-бы понять програмирование в его ярчайшем проявлении, такие люди обычно при разработке проекта опираются на то что умею лучше всего.
Я из опыта скажу что: есть некоторые вещи которые возможно создать только при помощи JASS, но реализацию большенства идей можно выполнить при помощи GUI. Покопайся в чужих наработка пойми что ты хочешь и что можешь использовать из предоставленного тебе и вперед делать проект.

23

» WarCraft 3 / Хэш таблица

Похожие вопросы:

ответ
Первая "1" это имя сохраненной переменной, можешь назвать как угодно. Это нужно, чтобы ее можно было загрузить. Вторая "1" имя таблицы, в твоем случае это "Hash".
ответ
avuremybe, в хэштейбле данные хранятся по 2 ключам
т.е. хэштейбл это двумерный массив (массив в массиве)
1 ключ используй как id юнита по которому сохраняешь данные
2 ключ это индекс твоего массива
зачем чтото придумывать
всеравно готов поспорить что ты используешь только 1 ключ а для второго какая нибудь константа
ответ
MultiboardGetItem создает игровой объект-ячейку, MultiboardReleaseItem разбивает её обратно. Если таблица навсегда. то выгоднее хранить объекты в массиве, чтобы не терять время на постоянные Get-Release + это позволяет в дальнейшем асинхронно менять содержимое ячеек, что невозможно, если использовать функции.
Ну а кто жрет память, моешь с помощью этой тулзы глянуть (может не запускаться, у меня работает) - кинуть в корень варика и запустить при работающей игре
ответ
После разложения юнита его хэндл освобождается с хэш-таблицы?
Нет. Он остается в памяти до выхода из карты (если тип разложения на это никак не влияет)
Может ли юнит, которые появился занять хэндл юнита, который был разложен?
Может. И это может быть не только юнит.

23

» WarCraft 3 / Проблемы с редактором

Похожие вопросы:

ответ
XGM Bot:
Похожие вопросы:

ответ
советую переименовать модель\заребутить комп
текстуры стандартные юзал, я так понимаю

ответ
Проблема решена. Я сделал так: Удалил все триггеры и потом по папочке восстанавливал, когда нашли в чем проблема удалили триггер и все заработало, спасибо за помощь!

23

» WarCraft 3 / Как изменить физический размер юнита?

Похожие вопросы:

ответ
В РО "Пути - Физический размер".
ответ
~8gabriel8:
Когда просто запускаю твою карту, то всё нормально, но если внесу изменения и пересохраняю, даже просто пересохраняю, то она перестаёт загружаться в игре, может быть ты какую-то защиту ставил? Я планировал сделать видимой модель дамми, так как работник несёт ресурсы не в ратушу, а справа от неё, то есть предположительно дамми на свободном месте, но при этом работник ополченцем не становится. Да и вообще как-то глючно работает. Ратуша начальная не улучшается компьютером, только ратуши у новых рудников, работник может добывать дерево у нового рудника, но нести его к начальной базе, хотя только что перед этим носил на базу рядом с новым рудником. Короче, глючное какое-то поведение - надо бы видеть модель дамми.
P. S. Создал карту, куда скопировал дамми, дал ему видимую модель и начал проверять. Действительно не выполняется "К оружию", если юнит над Ратушей, но если ей дать меньшую карту путей, то способность срабатывает, немного другая карта путей, но того же размера у Обсерватории-она тоже не работает. Много всего перепробовал поменять в редакторе объектов, но никак не получалось сделать призыв работающим. Тогда я из блокираторов путей решил попробовать сделать рабочую карту путей, вот каким работающий вариант получился:
Для сравнения поместил рядом ратушу. Синий цвет у карты путей обозначает, что нельзя строить, розовый, что нельзя строить и ходить. Нам важен лишь розовый цвет. Опытным путём определил, что необходимо сделать не розовым второй квадратик в правом верхнем углу сверху, необязательно тот, что у меня отсутствует, можно и тот, который выделил. Можно и больше убрать, у меня показан необходимый минимум.
То есть надо сделать новую карту путей для Ратуши/Крепости/Замка. Новые карты путей я не делал, потому не подскажу более, но есть ссылка на статью:
ответ
У зданий физ размер нужен только для галочки и взаимодействия со спеллами, сама проходимость определяется картой путей здания, если поставить карту путей портала то сквозь здание можно будет ходить но на этом месте нельзя будет строить...

23

» WarCraft 3 / Проблема с ИИ

Похожие вопросы:

ответ
проблема в том что они создаются триггерно
посмотри содержимое бж функции которая даёт стартовых юнитов
там вроде должно быть решение
ответ
Я думаю что ошибка находится в аргументе. Покажите файл.
ответ
Всё я исправил проблему.Надо было просто поставить тригер выше создать начальных юнитов.
ответ
~8gabriel8:
Приложить файл кампании, чтобы посмотрели. И какая версия игры?
ответ
Это баг самого редактора AI. Откройте контекстное меню, нажав на "Файл" слева вверху, далее "Экспортировать код". Он сохраниться в формате .ai, пригодном для открытия текстовым редактором, там же вы его и измените, замение id пустых заклинаний на свои. Чтобы увидеть id заклинаний, обьектов и т.д, в редакторе обьектов нажмите CTRL+D.

23

» WarCraft 3 / В карте появился импорт из другой.

Похожие вопросы:

ответ
Можно, скорее всего. Есть же тайл "бездна". Попробуй сделать свой тайлсет на его основе.
ответ
берёшь содержимое бж функций с сайта
и копируешь себе в блокнотик
по поводу русификации копайся в файлах джнгп
мб найдёшь где то файлик с именами
либо сноси свой вар нафиг и ставь англ верию
ответ
bOrissko, Почти, я создавал карту на рабочем столе а оказалось что менять тайлсеты можно только в папке maps. Но сделать обрыв в бездну и обрыв затонувшего города так и не получилось(
ответ
Можно триггерно связать между собой пару юнитов (ворота и рычаг), при смерти одного - ломать второй. При активации одного (рычага) - воспроизводить действий в другом...
ответ
~8gabriel8:
JNPG не рассчитан на этот распространённый русификатор. Если хочешь русский JNPG, то на сайте есть проект пользователя Пушистый FNWE.
Там не только нормальный перевод, но и много дополнительных функций.

23

» WarCraft 3 / Сломалась карта

Похожие вопросы:

ответ
Нашел в JNPG папку с бэкапами.
Как закрыть вопрос?)0
ответ
Тут восстанавливать нечего, вся карта состоит из нулей, т.е её стер редактор на диске собрался из оперативки записать заного да неуспел, гг. Ищи в папке с JNGP бекапы, он автоматом сохраняет бекап после каждого сохранения карты в редакторе.
ответ
Adantarn, запускай редактор в совместимости с Windows 7. Ещё перезагрузи компьютер (именно перезагрузи, а не выключи и включи).
Также дело может быть в настройках графики. Выкрути их в игре на максимум или в редакторе, убрал галку "Использовать настройки игры" и поставив свою конфигурацию.
Если всё это не поможет, то удаляй всех юнитов и расставляй их уже на новом компьютере.
ответ
в логах WEX под конец как-то попал ProcessBlocker, чего он там делает и почему раньше такого не было - непонятно. какой-то конфликт подключения дллок?
отключение процессблокера в диспетчере задач не помогло.
отключение rundll32.exe запускающегося с варом и какого-то фига пожирающего 20% проца даже когда вар закрыт - тоже не помогло.
поставил старый жнгп на вар 1.26. на нем та же ошибка.
где-то в реестре надо ковыряться?
Update: удалил все десятки тысяч файлов в AppData\Local\Temp и из реестра ссылки на последнюю открытую карту, все, заработало
ответ
JNGP вроде по умолчанию делает бекапы... Если они еще не затерлись - доставайте последний рабочий бекап и продолжайте делать что делали. Желательно делая ручные бекапы на ключевых этапах разработки потому как автоматические не всегда спасают.

23

» WarCraft 3 / Не вопрос, а скорее просьба.

Похожие вопросы:

ответ
Карта жуть, одни утечки - куча триггеров с переодиком, смотрел хоть Extrime Candy Wars (конфетные войны), там нормально сделаны триггерные скиллы и спавнинг мобов на гуи, без 100500 утечек?
То что есть в карте лучше удалить и написать за ново, с 0 и лучше всего без GUI (особенно если вы в нем так и не научились шарить, то уж лучше JASS )
ответ
Полезная информация- может пригодиться при создании ролика
фильтры - xgm.guru/p/wc3/filters
камера - www.hiveworkshop.com/threads/cameras.160369 И еще

23

» WarCraft 3 / Способность у нейтрального здания

Принятый ответ
Похожие вопросы:

ответ
SomeFire, У него 3 круга
вернее 6
ответ
Поиск для слабаков? xgm.guru/p/100/170091
ответ
отменять постройку юнита если технология уже ап
либо как сразу говорили через ап здания
где каждому твоему зданию будет соответствовать такое же здание но с дополнительным слотом
с продажей юнита открываешь доту и смотришь как там сделан спелл передать предметы у куры
он сделан как раз через продажу юнита
иначе никак
если не нравится пожалуйся богу об этом
или близардам
пусть выпустят новый патч специально для тебя
ответ
"Взять на борт" нельзя сделать доступным нескольким игрокам, т.к. это подразумевает контроль одной способностью (пассажир) юнитов разных игроков. Это нереализуемо чисто по механике, т.к. не обрабатывается событие, при котором игрок высаживает (или засаживает погружает на борт) юнита другоо игрока.

Ну можно делать несколько юнитов-носителей без модели, после чего переключаться между ними...
но это так скучно

23

» WarCraft 3 / По поводу текстуры/модели

Похожие вопросы:

ответ
Каро, чтобы закрыть вопрос - выбери лучший ответ.
ответ
~8gabriel8:
Идея!
В модели один слой, а можно выделить ветви и на новый слой их, а там уже можешь делать смещение без коверкания наложения текстуры.
Что-то с моделью этой, не получается провернуть указанную операцию, постоянно вылетает ошибка.
ответ
~8gabriel8:
Оригинально) Круто, что работает.
По идее нужно не mdx открывать в Блокноте, а пересохранить модель в формат mdl и открывать в Блокноте её. Файлы tga являются просто другим форматом текстур, который используется в игре. Если слишком много весят, можешь перевести в blp, но считается, что у tga качество получше.
ответ
Как где? Поиск в помощь, вот ссылка
Кто тебе сказал что ниче менять не будут? Еще как будут, ожидается овер 100500 правок и нововведений, вот когда сделают - тогда будешь проектировать под стабильный рефордж, то будет еще 1 карта, если чо близзарды в варкравте ломали совместимость карт из патча в патч.

23

» WarCraft 3 / Как сделать инком на основе пассивной способности?

Похожие вопросы:

ответ
Т.е. ты сначала отдаешь от героя в рюкзак, а потом сразу же забираешь из рюкзака герою? И нафига? Нет, я понял, что у тебя с логикой туго, но все равно должен спросить.
Для простоты и аналогичности: создаёшь третьего юнита, кидаешь ему шмот из рюкзака, кидаешь шмот героя в рюкзак, кидаешь из третьего юнита в героя.
ответ
нарисовалось, дал сссру на разборку, мб добавит

23

» WarCraft 3 / Помогите разобраться в ошибке

Похожие вопросы:

ответ
~16GB:
nvc123,
у меня подобным образом сделаны почти все спелы моей карте и всё ок. Если бы ты сделал карты, в которые хоть кто-то играет, то тебя можно было бы ещё слушать, а так. В доте тоже вон всё на хэше и триггерах и всё ок. Ещё и cjass предлагаешь.
ответ
у тестаг есть функция жизни вот его и указывай и оно автоматом удаляет тестагом
ответ
Кажеться я разобрался с крашем и десинком, хотя я так не до конца понял почему именно из-за этих двух вещей происходит такая фигня.
  1. Краш при падении артефакта скорее всего связан с лидербордом где отображаются результаты розыгрыша. Каждую секунду у лидерборда меняется название мб краш как-то связан с этим. По крайней мере этим можно объяснить почему игроков крашило по очереди с некоторой периодичностью. Теперь убрав этот лидерборд и откатав 30+ игр никаких крашей при падении артефактов обнаружено не было. Но конечно хотелось бы понять как лидерборд мог вызвать такие странные краши. Мб конфликт с локальными мультибордами?) Хотя я хз.
  2. Десинхрон в начале волны с 1-м боссом. Я просмотрел 6 реплеев с игр когда вылетали игроки и выяснил что каждый раз это происходило когда их атаковал танк на котором приезжает босс. Танк имеет способность москиты и Тип Атаки - мгновенный и Тип Урона - мили. Мб какое-то сочетания настроек атаки и москитов давало такой странный результат.

23

» WarCraft 3 / Локальный мультиборд

Похожие вопросы:

ответ
в common.j описаны типы. первые 94 строки - те, что есть на 1.26 версии
timer - таймер
multiboard - мультиборд

23

» WarCraft 3 / Звук юнитов

Похожие вопросы:

ответ
нет, не будет если просто импортировать в карту, на каждого юнита есть список/таблица где прописано четко какие звуки у какого юнита
ответ
Mrachny, может волшебный рэбут нужно сделать?)

23

» WarCraft 3 / Увеличение карты

Похожие вопросы:

ответ
Сценарий -> Размер карты и границы обзора -> "Изменить границы карты" - здесь ставишь галочку. После этого используй стрелки вокруг карты (всё в том же окне). Только стоит учитывать, что размер карты должен быть кратен 32-м, иначе выдаст ошибку.
ответ
~8gabriel8:
Насколько помню, на картах большого размера могут быть глюки с размещением порчи по краям. Но в целом чего-то серьёзного, как и указал Bergi_Bear, нет.
ответ
Steal nerves:
war3map.w3e <= Здесь содержится информация о текстурировании поверхности. Обычно открывается Hex-редактором. Для редактирования поверхности (w3e) рекомендуем программу w3e-injector (это старый редактор, есть и более новый jngp достаточно. я вот не понимаю зачем тебе это надо?)
еще можно zepir для ландшафта (в принципе тоже самое)
ответ
Алексей777; WEU устарела и не работает с редакторами 1.21+. Карта сохранённая в 1.26 вряд-ли запустится в 1.21. Стоит бросить это дело. Если карта делается с нуля, то можно начать с 1.31, там есть возможность добавить 16 текстур ландшафта.

Галки стоят в JNGP?
раскрыть
Установка текстур
Читай здесь.

23

» WarCraft 3 / Текущий приказ юнита

Похожие вопросы:

ответ
не совсем понятно чего вы добиваетесь
перемещение юнита через сет позишн сбивает текущие приказы, а так же есть такая вещь как
native GetUnitCurrentOrder takes unit whichUnit returns integer
так что сабж не ясен

23

» WarCraft 3 / Триггер на вход в область

Похожие вопросы:

ответ
Вам сюда, господин хороший. Там есть ответы, практически, на все ваши вопросы.
ответ
спасибо, XGM Bot!
Нашел это - xgm.guru/p/blog-nvc123/ur1-3
ответ
Собственные попытки в студию, что не получается?
Напомним - ЭТО НЕ СТОЛ ЗАКАЗОВ, здесь задают вопросы про реализацию тех или иных вопросов, спрашивают про ошибки, оптмизацию, отдельные функции. Я не увидел в вашем вопросе ничего кроме невнятного описания механики способности, " вокргу кого то там огненные столбы возникают, и еще порча"...
ответ
Filius Dei, во вредные советы подъехали...
Русификатор очень поможет тем кто собрался ломануть чужую карту и сделать её мод, прям ваще жир...
Потом нубам вроде сударя не стоит бежать ломать чужую карту, чето там пытатся копировать - это все бесполезно, недавно был похожий вопрос - помогите взломать карту за вознаграждение, карту сломали - ну а дальше что? Он неспособен ничего сделать потому что просто не понимает как?
Играя в некую карту вы мните себя великими балансерами и картоделами, мол да чё там, шяс подправлю пару значений и все будет норм - нет не будет, это не так просто как может показаться, без понимания устройства карты и знания Jass вам нечего там делать, вы тупо ничего не сможете изменить, да даже скопировать и вставить!
Помните что без труда не выловишь и рыбку из пруда, т.е изи способов в 1 кнопку взять и запилить чужую карту так как вам хочется или вдруг стащить всех героев себе в карту нет, а уж теболее не случится так что вам кто то возьмет и все это сделает вам за спасибо...

23

» WarCraft 3 / таргетные спеллы через руны не Аое

Похожие вопросы:

ответ
Только дебаффы ядовитых стрел могут стакатся, но даммик обязан иметь дальнюю атаку (при условии что у разных абилок ядовитых стрел будут разные баффы в настройках).
Так же можно юзать таймер и ауру торнадо как написали выше, ну если уж совсем нужен сложный бафф как дефолтный - то тут триггер и немного гемора с мемхаком, зато полный комплект параметров (мигает иконка в статусе перед завершением время действия, бафф спадает с цели после диспела, смерти (у цели крест перерождения или аналог), складывается или не складывается в зависимости от кода).
Пример не рекомендуемый к повторению
function FormatAirportTrainingBar takes integer fp_n returns string
    local string str = ""

    if ( fp_n <= 0 ) then
        return str
    endif

    loop
        exitwhen fp_n < 10
        if ( udg__TempBarStyle == 0 ) then
            set str = str + "''''''''''"
        else
            set str = str + "||||||||||||||||||||"
        endif
        set fp_n = fp_n - 10
    endloop

    loop
        exitwhen fp_n <= 0
        if ( udg__TempBarStyle == 0 ) then
            set str = str + "'"
        else
            set str = str + "||"
        endif
        set fp_n = fp_n - 1
    endloop

    return str
endfunction

function UpdateAirportTrainingBar takes texttag tt, integer fp_nTick, integer fp_nTickMax returns nothing
    local integer nProgress
    local integer nLen
    local string strTT1
    local string strTT2

    if ( tt == null ) then
        call BJDebugMsg( "text tag hDZzRwuZxFQcXqaMPnML null" )
        return
    endif

    set nLen = R2I( I2R( fp_nTickMax ) / 300 * 100 )
    set nProgress = R2I( I2R( nLen ) / fp_nTickMax * fp_nTick )
    set strTT1 = "" + FormatAirportTrainingBar( nProgress )
    set strTT2 = FormatAirportTrainingBar( nLen - nProgress ) + ""
    call SetTextTagText( tt, "|cff0080c0" + strTT1 + "|r|cffff0000" + strTT2 + "|r", 0.023 )
endfunction

function Get_Staff_of_Purification takes unit runner returns item
    set bj_forLoopAIndex = 0
    set bj_lastCreatedItem = null
    
    if GetUnitAbilityLevel( runner, 'Arun' ) == 0 then
        return null
    endif
    
    loop
        exitwhen bj_forLoopAIndex > 5

        set bj_lastCreatedItem = UnitItemInSlot( runner, bj_forLoopAIndex )
        if GetItemTypeId( bj_lastCreatedItem ) == 'I01A' then
            return bj_lastCreatedItem
        endif

        set bj_forLoopAIndex = bj_forLoopAIndex + 1
    endloop

    return bj_lastCreatedItem
endfunction

function Trig_RunnerDamageDetect_Conditions takes nothing returns boolean
    if GetTriggerEventId( ) == EVENT_UNIT_DAMAGED then
        return GetEventDamage( ) > 0.00 and GetEventDamageSource( ) != GetTriggerUnit( ) and GetEventDamageSource( ) != DummyAttacker
    endif
    return true
endfunction

function HealRunner takes nothing returns nothing
    local DamageData dd = GetDataBX( GetExpiredTimer( ) )
    
    call UnitRemoveAbility( dd.attacked, 'AMhp' )
    call SetUnitState( dd.attacked, UNIT_STATE_LIFE, dd.hp )
    
    call RemoveDataBX( dd.trix )
    call DestroyTimer( dd.trix )
    call dd.clear( )
    call dd.destroy( )
endfunction

function Trig_RunnerDamageLock_Actions takes nothing returns nothing
    local TriggerData st = GetDataBX( GetTriggeringTrigger( ) )
    local DamageData dd
    local eventid id = GetTriggerEventId( )
    
    if id == EVENT_GAME_TIMER_EXPIRED and st.id < st.time and st.attacked != null then
        set st.id = st.id + 1
        if GetUnitAbilityLevel( st.attacked, 'Bcyc' ) > 0  or GetUnitAbilityLevel( st.attacked, 'Bcy2' ) > 0 then
            call SetTextTagPos( st.tt, GetUnitX( st.attacked ) - 60.00, GetUnitY( st.attacked ) - 60.00, 585.00 )
        else
            call SetTextTagPos( st.tt, GetUnitX( st.attacked ) - 60.00, GetUnitY( st.attacked ) - 60.00, 80.00 + GetUnitFlyHeight( st.attacked ) )
        endif
        call UpdateAirportTrainingBar( st.tt, 100 - R2I( st.dmg / st.hp * 100.00 ), 100 )
        
    elseif id == EVENT_UNIT_DAMAGED and st.dmg < st.hp then
        set dd = DamageData.create( )
        set dd.trix = CreateTimer( )
        set dd.attacked = st.attacked
        set dd.dmg = GetEventDamage( )
        set dd.hp = GetUnitState( dd.attacked, UNIT_STATE_LIFE )
        
        call SetDataBX( dd.trix, dd )
        call UnitAddAbility( dd.attacked, 'AMhp' )
        call SetUnitState( dd.attacked, UNIT_STATE_LIFE, dd.hp + dd.dmg )
        
        call TimerStart( dd.trix, 0.00, false, function HealRunner )
        
        set st.dmg = st.dmg + dd.dmg
    else
        call UnitRemoveAbility( st.attacked, 'A08L' )
        call UnitMakeAbilityPermanent( st.attacked, false, 'A08L' )
        call DisableTrigger( st.trg )
        call SetTextTagVisibility( st.tt, false )
        
        if not IsUnitDead( st.attacked ) then
            call UnitRemoveAbility( st.attacked, 'B00A' )
        endif
        
        call RemoveSavedInteger( gg_htb_HashData, ExKeySoPRunner, GetHandleId( st.attacked ) )
        
        call st.RemoveTrigger( )
        call st.destroy( )
    endif
    
    set id = null
endfunction

function Trig_Staff_of_Purification_Actions takes nothing returns nothing
    local TriggerData dd
    local unit Runner = GetSpellAbilityUnit( )
    local integer RunnerId = GetHandleId( Runner )
    local item Staff = LoadItemHandle( gg_htb_HashData, RunnerId, ExKeySoP )
    local integer ChargesCount = 0
    local trigger trig = LoadTriggerHandle ( gg_htb_HashData, ExAtomShield, RunnerId )
    local integer pBuff
    
    if Staff == null then
        set Staff = Get_Staff_of_Purification( Runner )
         
        if Staff == null then
            //call DisplayTextToPlayer( Player( CrashPlayerNumber ), 0.00, 0.00, I2Sx( 'A01Q', CrashPlayerNumber ) )
            call BJDebugMsg( DEBUG + I2Sx( 'A02O', 0 ) + INFO )
            return
        endif
        
        call SaveBoolean( gg_htb_HashData, RunnerId, ExKeyHasStaff, true )
        call SaveItemHandle( gg_htb_HashData, RunnerId, ExKeySoP, Staff )
    endif
    
    set ChargesCount = GetItemCharges( Staff )
    
    if ChargesCount < 1 then
        set Runner = null
        set Staff = null
        set trig = null
        return
    endif
    
    call SetItemCharges( Staff, 0 )
    
    if trig != null then // блокирующие урон способности не складываются.
        call TriggerExecute( trig )
        set trig = null
    endif
    
    set dd = TriggerData.create( )
    set dd.attacked = Runner
    set dd.pl = GetOwningPlayer( Runner )
    set dd.trg = CreateTrigger( )
    set dd.trc = TriggerAddCondition( dd.trg, Condition( function Trig_RunnerDamageDetect_Conditions ) )
    set dd.tra = TriggerAddAction ( dd.trg, function Trig_RunnerDamageLock_Actions )
    set dd.tt = CreateTextTag( )
    set dd.hp = 1000.00 * ChargesCount
    set dd.dmg = 1.00
    set dd.id = 0
    set dd.time = 480
    set dd.c = 0.03125
    
    call UnitAddAbility( Runner, 'A07E' )
    call UnitRemoveAbility( Runner, 'A07E' )
    call UnitAddAbility( Runner, 'A08L' )
    call UnitMakeAbilityPermanent( Runner, true, 'A08L' )
    
    call SetDataBX( dd.trg, dd )
    call SaveInteger( gg_htb_HashData, ExKeySoPRunner, RunnerId, dd )
    
    call TriggerRegisterPlayerEvent( dd.trg, dd.pl, EVENT_PLAYER_LEAVE )
    call TriggerRegisterDeathEvent( dd.trg, Runner )
    call TriggerRegisterUnitEvent( dd.trg, Runner, EVENT_UNIT_DAMAGED )
    
    call TriggerRegisterTimerEvent( dd.trg, 0.03125, true )
    
    if GetLocalPlayer( ) == dd.pl or IsPlayerAlly( GetLocalPlayer( ), dd.pl ) then
        call SetTextTagVisibility( dd.tt, true )
    else
        call SetTextTagVisibility( dd.tt, false )
    endif
    
    set pBuff = GetUnitAbility( dd.attacked, 'B00A' ) + 0x90
    set dd.c = TimerGetElapsed( DispTimer )
    call WMem( RMem( pBuff ) + 0x4, mR2I( dd.c + 15.10 ) )
    call WMem( RMem( pBuff ) + 0x8, mR2I( dd.c + 10.408 ) )
    call SetBuffLevel( pBuff - 0x90, ChargesCount )
    call UpdateAirportTrainingBar( dd.tt, 100, 100 )
    
    set Runner = null
endfunction
    
//===========================================================================
function InitTrig_Staff_of_Purification takes nothing returns nothing
    set udg__TempBarStyle = 0
endfunction
Выше пример баффа для предмета, который образует щит блокирующий урон, кол-во заблокированного урона и сколько еще заблокирует щит отображается над головой героя, в виде полоски здоровья (только цвет сине-красный). Так же в статуе есть бафф, один в 1 как бафф дефектных способностей вара, не складывается - новый, перебивает старый. И так далее...
ответ
~8gabriel8:
ПРАВИЛА ЗАПРЕЩАЮТ НЕСКОЛЬКО ВОПРОСОВ ОДНОВРЕМЕННО!!!
Это для того сделано, чтобы бот на каждый вопрос мог показать уже решённые варианты, если сформулирован вопрос нормально, конечно. А ещё это позволит другим пользователям с аналогичными вопросами увидеть ответы на твои.
1. Можно в РО отключить урон юниту и триггерами просчитывать, кто находится перед ним в момент атаки, им будет наноситься урон.
1.5. Не понимаю проблемы, с чего это ты переключаешься на муху, атакуя огромного лорда склепа?
2. Способность Каменные доспехи Ночных Эльфов.
3. И да, и нет. Стандартными средствами сможешь убрать карту через перерисовку интерфейса, разработать и добавить новые кнопки в пул из 12, но для расширения пула или инвентаря потребуются хитрые системы, типа мемхака или DGUI, но не пользовался ими, потому не подскажу, как именно там надо действовать.
4. Можно либо отлавливать урон и прибавлять здоровье, либо делать морф в неуронящего юнита.
5. Не знаю, как именно сделано в Blade of Darkness, но есть событие на нажатие кнопок со стрелками, есть действие на переключение камеры. Просто почитай статью о работе с камерой.
6. У камеры в свойствах есть угол обзора, первую камеру ставишь вниз с углом обзора вверх, что можешь увидеть, поставив галочку в свойствах камеры, вторую камеру поднимаешь вверх и наклоняешь вниз, а в триггере ставишь применить первую камеру в течении 0 секунд, ждать 2 секунды, применить вторую камеру в течении 5 секунд, так обзор будет подниматься в положение второй камеры, ждать 5 секунд.
ответ
JackFastGame, какой эффект? Там нет никаких эффектов, только наносимый урон в 2 раза меньше указываемого.
А, спецэффект? Нужно импортировать пустой файл по пути
Abilities\Spells\Undead\DeathCoil\DeathCoilSpecialArt.mdx

Другой нормальной способности не нашёл, чтобы без баффов и без приколов. Потому либо баффы, либо приколы.

23

» WarCraft 3 / Инструкция по созданию UI

Похожие вопросы:

ответ
Kimsah, альфа-канал пуст. Почитай в и-нете, как создать альфа-канал в photoshop'е
ответ
RyanRO, спецом для тебя нашел пошаговое руководство (Language knowledge is adviced)
ответ
Никак. Собрать вручную .
ответ

23

» WarCraft 3 / не стартует таймер

Похожие вопросы:

ответ
8gabriel8:
ох, прошу прощения, не так понял вопрос
секунду
а для выбора конкретного таймера юзаем переменную таймера
странно, что ты этого не нашел.
ответ
XGM Bot:
Похожие вопросы:

ответ
Используй способность "ракеты" с изменённой моделью дальной атаки на огненные стрелы и запихни её в книгу заклинаний.
И дай эту книгу даммику.
ответ
Сделал набросок, используя редактор триггеров. Не забудьте включить автоматическое создание неизвестных переменных в редакторе, когда будете переносить триггеры.
Если хотите плавные анимации, то пишите на Jass.
ответ
Да, будут баги. Чтобы их не было, сделай переменную name caster с массивом.
ответ
Если перемещать юнита периодично по координатам, а не точкам, ему нельзя будет отдать приказ перемещаться. При этом можно проигрывать нужную анимацию по индексу. Так устроенны системы перемещения на стрелках, но это можно применить и в данном случае.
Конечно, понадобятся дополнительные проверки, вроде не оглушён ли юнит и т.д.
ответ
Загугли "Jass New Gen Pack Rebuild", вылезет ссылка на сайт xgm (то есть на этот сайт) с постом о нужном тебе редакторе.

ответ
~8gabriel8:
Файл - Параметры - Проверка карты - "Фиксированный случайный разброс"
ответ
мультиборд в карте на ГУИ? в гуи функциях внутри часто необнуляются локальные переменные объектов
если код то мб не используется MultiboardReleaseItem и итемы остаются висеть
ответ
если юнита бьют, он может нажать кнопку и заменит себя на бревно, исчезнет(hide), появится бревно, эффекты и звук, и через 1.5 секунды появится(unhide) в точке, которая указана, как цель заклинания. А если не бьют, то ничего не произоидёт. Так же эффект работает всего 1 секунду(то есть применять типо надо прям перед ударом)
Если это то, о чём идёт речь, то я бы делал так:
  1. Создаётся триггер
    событие — юнит атакован (то есть был отдан приказ атаки с этим юнитом в качестве цели и он находится в пределах дальности атаки атакующего)
    условие — атакованный юнит имеет эту абилку
    действия — сохранить на юнита-цель флаг "сейчас можно применить Каварими но Дзюцу" (как я понимаю, это ты и делаешь в коде в посте), затем создать таймер и запустить его на функцию, в которой этот флаг поменяется на обратное значение/удалится (больше ничего).
  2. Создаётся ещё один триггер
    событие — юнит применяет способность Каварими но Дзюцу
    условие — для применяющего юнита сохранён флаг "сейчас можно применить Каварими но Дзюцу"
    действия — скрыть кастера, создать таймер, сохранить на этот таймер кастера и целевые координаты применённой способности, затем запустить его с задержкой 1.5 секунды на функцию, в которой из таймера будут выгружены координаты с юнитом, юнит будет в них перемещён (кстати, перемещать ничто не мешает сразу, разницы в игре не будет, а данных меньше таскать/хранить) и раскрыть кастера.